public class test2 {
    //力扣 91.解码方法
    public int numDecodings(String s) {
        //创建dp数组
        //初始化
        //填表
        //返回值
        int n = s.length();
        int[] dp = new int[n];
        char[] arr = s.toCharArray();
        //初始化第一个值
        if(arr[0]!='0'){
            dp[0] = 1;
        }
        //处理边界情况
        if(n==1) return dp[0];

        //初始化第二个值
        if(arr[1]!='0' && arr[0]!='0'){
            dp[1] += 1;
        }
        int t = (arr[0]-'0')*10+(arr[1]-'0');
        if((t>=10 && t<=26) ){
            dp[1] += 1;
        }
        //填表
        for(int i = 2;i<n;i++){
            if(arr[i]!='0'){
                dp[i] += dp[i-1];
            }
            int tt = (arr[i-1]-'0')*10+(arr[i]-'0');
            if((tt>=10 && tt<=26)   ){
                dp[i] += dp[i-2];
            }
        }
        //返回值
        return dp[n-1];
    }
}
